package leetcode;

import java.util.Arrays;

/**
 * 未知 整数数组 arr 由 n 个非负整数组成。
 * <p>
 * 经编码后变为长度为 n - 1 的另一个整数数组 encoded ，其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如，arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。
 * <p>
 * 给你编码后的数组 encoded 和原数组 arr 的第一个元素 first（arr[0]）。
 * <p>
 * 请解码返回原数组 arr 。可以证明答案存在并且是唯一的。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/decode-xored-array
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @author Europa
 */
public class Num1720 {

    public int[] decode(int[] encoded, int first) {
        int[] ints = new int[encoded.length + 1];
        ints[0] = first;
        // 异或是^, a^b=c a^c=b b^c=a
        for (int i = 1; i <= encoded.length; i++) {
            ints[i] = ints[i - 1] ^ encoded[i - 1];
        }
        return ints;
    }

    public static void main(String[] args) {
        Num1720 num1720 = new Num1720();
        int[] ints = {1, 2, 3};
        int first = 1;
        int[] decode = num1720.decode(ints, first);
        System.out.println(Arrays.toString(decode));
    }
}
